#ifndef __GRAPHIC_PARTICLE_MODIFIER__
    #define __GRAPHIC_PARTICLE_MODIFIER__

    // .. REFERENCES

	#include "primitives.h"
    #include "graphic_particle_system.h"
	#include "defs.h"

    // .. TYPES

    class GRAPHIC_PARTICLE_MODIFIER :
        public OBJECT
    {
        // -- PUBLIC

    public :

        // .. TYPES

        DECLARE_REF( GRAPHIC_PARTICLE_MODIFIER );

        // .. CONSTRUCTORS

        GRAPHIC_PARTICLE_MODIFIER();

        ~GRAPHIC_PARTICLE_MODIFIER()
        {
        }

        // .. ACCESSORS

        UINT32 GetFlags() const
        {
            return Flags;
        }

        // .. OPERATIONS

        virtual VOID Modify(
            GRAPHIC_PARTICLE_TABLE::FIXED_PARTICLE_TABLE & particle_table,
            const TIMER & time_step
            );

        // -- PROTECTED

    protected :

        // .. ATTRIBUTES

        UINT32
            Flags;

        // -- PRIVATE

    private :

        // .. CONSTRUCTORS

        GRAPHIC_PARTICLE_MODIFIER(
            const GRAPHIC_PARTICLE_MODIFIER & other
            );

        // .. OPERATORS

        GRAPHIC_PARTICLE_MODIFIER & operator=(
            const GRAPHIC_PARTICLE_MODIFIER & other
            );

    };
#endif
